#include "gamehall.h"
#include "ui_gamehall.h"
#include "gameselect.h"
#include "utility.hpp"
#include <QPainter>
#include <QPixmap>
#include <QPushButton>
#include <QFont>
#include <QSound>
#include <QIcon>
#include <QFile>
#include <QDebug>

gameHall::gameHall(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::gameHall)
{
    ui->setupUi(this);

    //读取qss文件属性
    const QString &style = utility::ReadFile("C:/Users/LKM/Code/snake-game/Snake/qss/gameHall/QPushButton.txt");

    //设置窗口大小
    this->resize(1000,800);
    //设置标题
    this->setWindowTitle("贪吃蛇");
    //设置窗口图标
    this->setWindowIcon(QIcon(":/resource/ico.png"));

    //游戏大厅的开始按钮的创建与设置
    QPushButton *startButton = new QPushButton(this);
    //设置qss属性
    startButton->setStyleSheet(style);
    startButton->setText("开始游戏");
    startButton->move(425,530);


    //创建一个gameSelect窗口，供开始按钮信号槽函数使用
    gameSelect *gameselect = new gameSelect;
    gameselect->setAttribute(Qt::WA_DeleteOnClose);

    //跳转到游戏选择界面，通过信号槽机制
    connect(startButton,&QPushButton::clicked,[=](){
        //关闭当前窗口
        this->close(); //就是隐藏掉了，不会马上释放掉

        //设置gameSelect窗口和当前gameHall窗口一样大
        gameselect->setGeometry(this->geometry());

        //显示gameSelect窗口
        gameselect->show();

        //播放点击按钮音频
        QSound::play(":/resource/clicked.wav");
    });
}

gameHall::~gameHall()
{
    delete ui;
}

//通过绘制事件来进行游戏大厅背景的绘制
void gameHall::paintEvent(QPaintEvent *event)
{
     //消除告警
     (void)event;

     //创建绘画者
     QPainter painter(this); //这里的this,不是指定父节点挂到对象树上，而是指定绘画的设备，这里我们要往this,也就是widget上绘画

     //创建图片对象
     QPixmap pixmap(":/resource/game_hall.png"); //要绘制的背景图片

     //开始绘制
     painter.drawPixmap(0,0,this->width(),this->height(),pixmap); //绘制出图片的大小需要和窗口的宽高一致
}

